Система статического анализа кода для автоматических рекомендаций создания сниппетов
Руководитель от корпоративного партнера:
Старичков Н.Ю., 1C
Руководитель от Университета ИТМО: Авксентьева Елена Юрьевна,
Университет ИТМО
Открытых вакансий: 2
Краткая аннотация
Разработка системы статического анализа кода для автоматических рекомендаций создания сниппетов (шаблонов кода). Каждый программист в рамках своих должностных обязанностей пишет очень много программного кода. При этом у каждого программиста есть свой “стиль” написания кода. И даже несмотря на строгое соблюдение правил оформления и написания кода - код двух разных людей будет отличаться. Многие IDE предлагают механизм сниппетов - когда есть уже заготовленные шаблоны кода, и их можно парой кликов мышкой или горячей клавишей вставить в рабочую область, внося при этом необходимые правки. При этом сниппеты либо заранее имеются в коллекции IDE (а они неперсонифицированные), либо есть возможность создания собственных - что обычно достаточно рутинный и скучный процесс. В рамках данного проекта предлагается разработать механизм, который будет путем статического анализа кода предлагать разработчику персональные сниппеты, учитывающие его индивидуальный стиль написания кода - при этом не требуя вручную настраивать и описывать эти шаблоны.
План действий
- Статический анализ программного кода.
- Рекомендательные системы и алгоритмы.
- Проектирование, разработка и тестирование системы статического анализа кода для автоматических рекомендаций создания сниппетов (шаблонов кода).
Решаемые технические проблемы
Ускорение набора программного кода и снижение количества ошибок.
Стек технологий
- User and Organizations
- Инструменты гибкой разработки Agile, Scrum, Kanban
- Тайм-менеджмент и планирование временем
- System Modeling
- Системное моделирование с использованием языков UML/SysML
- Анализ требований
- System Architecture and Infrastructure
- Методы проектирование программных систем
- Методы проектирования интеллектуальных систем
- Организация параллельных и распределенных вычислений
- Компьютерные сети
- Виртуальные системы и сервисы
- Software Development
- Программирование на языках C++, Java, Python
- Использование стандартных библиотек С++, Boost, библиотек Python для обработки, анализа и визуализации данных
- Web-разработка с использованием HTML, CSS, Java Script, PHP.
- Software Fundamentals
- Алгоритмы и структуры данных
- Операционные системы реального времени
- Hardware
- Архитектура вычислительных систем
Предварительный перечень курсов
- Обработка и анализ данных https://openedu.ru/course/ITMOUniversity/BIGDATA2035/
- Прикладной искусственный интеллект https://openedu.ru/course/ITMOUniversity/APPARTINT2035/
- Методы машинного обучения https://openedu.ru/course/ITMOUniversity/INTROML/
- Интеллектуальный анализ данных https://openedu.ru/course/ITMOUniversity/MLDATAN/
- Анализ текстов https://openedu.ru/course/hse/TEXT/ (https://www.coursera.org/learn/text-mining?action=enroll)
- Распределенные база данных и знаний https://openedu.ru/course/spbu/DTBS/
- Мультиагентные системы http://window.edu.ru/resource/434/57434
- Системы поддержки принятия решений.
- Администрирование PostgreSQL 9.4. Базовый Курс https://www.youtube.com/watch?v=h_GdEaF1Ymc&list=PLaFqU3KCWw6KzGwUubZm-9-vKsi6vh5qC&index=2
- JSON and Natural Language Processing in PostgreSQL https://ru.coursera.org/learn/json-natural-language-processing-postgresql
- Специализация Learn SQL Basics for Data Science https://ru.coursera.org/specializations/learn-sql-basics-data-science
- Intermediate PostgreSQL https://ru.coursera.org/learn/intermediate-postgresql
- Библиотека программиста https://proglib.io/p/postgresql/
- Профессиональный информационно-аналитический ресурс, посвященный машинному обучению, распознаванию образов и интеллектуальному анализу данных http://www.machinelearning.ru/
Кем станет студент по завершению магистратуры
Программист-стажер, программист, разработчик систем машинного обучения и ИИ
Пререквизиты (входные требования)
Базовые программы курсов:
- Высшая математика
- Основы программирования
- Алгоритмы и структуры данных
- Программная инженерия
- Архитектура программных систем
- Базы данных